﻿using MES_SystemUI.Context;
using MES_SystemUI.Domain;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace MES_SystemUI.UI.DataDictUI.ProductsDataDic
{
    // 工艺工序
    public partial class ProductionTechnologyDetailsListForm : MES_SystemUI.UI.DataDictUI.DataBaseForm
    {
        public ProductionTechnologyDetailsListForm()
        {
            InitializeComponent();
            this.Load += ProductionTechnologyDetailsListForm_Load;
        }

        private void ProductionTechnologyDetailsListForm_Load(object sender, EventArgs e)
        {
            BindDataGridView();
        }
        public override void GetDataBind()
        {
            using (var ct = new Context.MES_SystemContext())
            {
                var que = from Ptd in ct.productionTechnologyDetails.ToList()
                          join Pt in ct.productionTechnologies on Ptd.ProductionTechnologyId equals Pt.ProductionTechnologyId
                          join Pp in ct.productionProcesses on Ptd.ProductionProcessId equals Pp.ProductionProcessId
                          join U1 in ct.users on Ptd.CreateUserId equals U1.UserId
                          join U2 in ct.users on Ptd.LastUpdateUserId equals U2.UserId into AllPc
                          from pc in AllPc.DefaultIfEmpty()
                          select new
                          {
                              序号 = Ptd.ProductionProcessId,
                              工艺名称 = Pt.ProductionTechnologyName,
                              工序名称 = Pt.ProductionTechnologyName,
                              状态 = Ptd.Status == 0 ? "启用" : "禁用",
                              创建人 = U1.UserName,
                              创建时间 = Ptd.CreateTime,
                              最后修改人 = pc != null ? pc.UserName : null,
                              最后修改时间 = Ptd.LastUpdateTime,
                          };
                if (!string.IsNullOrEmpty(textBox1.Text.Trim()))
                {
                    que = que.Where(x => Regex.IsMatch(x.工艺名称, textBox1.Text));
                }
                if (!string.IsNullOrEmpty(dateTimePicker1.Text.Trim()))
                {
                    //DateTime dateTime1 = DateTime.Parse(dateTimePicker1.Value.ToString("yyyy-MM-dd") + " 00:00:00");
                    DateTime dateTime1 = DateTime.Parse(dateTimePicker1.Text + " 00:00:00");
                    que = que.Where(x => x.创建时间 >= dateTime1);
                }
                if (!string.IsNullOrEmpty(dateTimePicker2.Text.Trim()))
                {
                    //DateTime dateTime2 = DateTime.Parse(dateTimePicker2.Value.ToString("yyyy-MM-dd") + " 23:59:59");
                    DateTime dateTime2 = DateTime.Parse(dateTimePicker2.Text + " 23:59:59");
                    que = que.Where(x => x.创建时间 <= dateTime2);
                }
                if (comboBox1.Text != "全部")
                {
                    que = que.Where(x => x.状态 == comboBox1.Text);
                }
                Page = que.Count() % MainForm.SystemDataConfig.pageNumber == 0 ? que.Count() / MainForm.SystemDataConfig.pageNumber : que.Count() / MainForm.SystemDataConfig.pageNumber + 1;
                que = que.OrderByDescending(k => k.序号);
                que = que.Skip((NumberPage - 1) * MainForm.SystemDataConfig.pageNumber).Take(MainForm.SystemDataConfig.pageNumber);
                // 绑定数据
                dataGridView1.Columns.Clear();
                dataGridView1.DataSource = que.ToList();


            }
        }
        public override void OpenExcelCore(DataTable dt, MES_SystemContext c, int i)
        {
            ProductionTechnologyDetail mode = new ProductionTechnologyDetail()
            {
                ProductionTechnologyId = int.Parse(dt.Rows[i][0].ToString()),
                ProductionProcessId = int.Parse(dt.Rows[i][1].ToString()),
                Status = int.Parse(dt.Rows[i][2].ToString()),
                CreateUserId = int.Parse(dt.Rows[i][3].ToString()),
            };
            c.productionTechnologyDetails.Add(mode);
        }
        public override void StateCore(DataGridViewCellMouseEventArgs e, MES_SystemContext c, int state)
        {
            var Pc = c.productionTechnologyDetails.Find(int.Parse(dataGridView1.Rows[e.RowIndex].Cells["序号"].Value.ToString()));
            Pc.Status = state;
        }
    }
}
